<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    // class Vehicle {
    //   constructor() {
    //     this.hasEngine = true
    //   }
    //   sayHello() {
    //     console.log('hello');
    //   }
    //   static identify() {
    //     console.log(this.name);
    //   }

    //   // static foo() {

    //   // }
    // }

    // class Bus extends Vehicle {
    //   constructor() {
    //     super() // 相当于执行了super.constructor(),并且内部指定了this关系
    //       // super()调用之前引用this会出错

    //     // console.log(this instanceof Vehicle);
    //     // console.log(this instanceof Bus);
    //     // console.log(this);
    //     console.log(Object.getPrototypeOf(this));
    //   }
    //   sayHello1() {
    //     super.sayHello()
    //   }
    //   static identify() {}
    // }
    // // let vehicle = new Vehicle()
    // // vehicle.identify()
    // // Vehicle.identify()
    // let bus = new Bus()
    // console.log(Object.getPrototypeOf(bus) === Vehicle.prototype);
    // console.log(Object.getPrototypeOf(bus) === Bus.prototype);
    // Bus.identify()
    // console.log(Vehicle.prototype);

    // 抽象基类
    // class Vechile {
    //   constructor() {
    //     if (new.target === Vechile) {
    //       throw new Error("基类不能用来创建实例")
    //     }
    //     if (!this.foo) {
    //       throw new Error("子类没有foo方法")
    //     }
    //     console.log("success");
    //   }
    // }

    // class Bus extends Vechile {
    //   foo() {}
    // }

    // class Dus extends Vechile {

    // }

    // let bus = new Bus()
    // let dus = new Dus()
  </script>
</body>

</html>